import {
    defineStore
} from "pinia";
//参数1：定义一个仓库的唯一id名，Pinia会将所有的容器挂载到根容器；参数2：选项对象
export const useMainStore = defineStore('main', {
    state: () => { //state必须是函数，是避免在服务端渲染时的交叉请求导致的状态数据污染；必须是箭头函数，为了更好的TS类型推导
        return {
            tabList: [
                {
                    id: '1',
                    name: "王小虎",
                    age: 18,
                    onlyChild: '1',//是否为独生子女，1为独生子女，0，非独生
                    huKou: '1',//是否农村户口，0为农村户口，1，城市户口
                    phone: '17752750628',
                    IDCard: '431022200012194444',
                    address: "湖南省长沙市岳麓区",
                    vaccine: '1',//是否接种疫苗，1为已种疫苗，0为未接种
                },
                {
                    id: '2',
                    name: "王小nknk虎",
                    age: 28,
                    onlyChild: '1',//是否为独生子女，1为独生子女，0，非独生
                    huKou: '1',//是否农村户口，0为农村户口，1，城市户口
                    phone: '17752750628',
                    IDCard: '431022200012194444',
                    address: "湖南省长沙市岳麓区",
                    vaccine: '1',//是否接种疫苗，1为已种疫苗，0为未接种
                },
            ]
        }
    },
    getters: {
        //函数接受一个可选参数:state
        count10(state) {
            return state.count + 10
        },
        ageSum: state => state.tabList.reduce((totle, item) => { return item.age >= 18 ? totle + 1 : totle }, 0)
        ,
        childSum: state => state.tabList.reduce((totle, item) => { return item.onlyChild === '1' ? totle + 1 : totle }, 0)
        ,
        huKSum: state => state.tabList.reduce((totle, item) => { return item.huKou === '1' ? totle + 1 : totle }, 0)
        ,
        vaccineSum: state => state.tabList.reduce((totle, item) => { return item.vaccine === '1' ? totle + 1 : totle }, 0)
        ,
        /*count10():number{   //在TS文件下，getters使用了this,则必须指定类型，否则会导致推导错误
        return this.count += 12
        }*/

    },
    actions: {
        addTable(obj) {
            // console.log('提交的数据:', obj, this);
            this.tabList.push(obj)
        },
        updataTab(obj) {
            //数据更新
            // console.log('数据更新');
            this.tabList = this.tabList.map(item => item.id === obj.id ? obj : item)

        },
        //删除数据
        changTab(arr) {
            // console.log('删除数据');
            this.tabList = this.tabList.filter(item => !arr.includes(item.id))
        }
    }
})